#pragma once

namespace Core {
	class Color4 {
	public: // Constructors
		Color4();
		Color4( float r, float g, float b, float a = 1.f );
		Color4( float const (&arr)[4] );

	public: // Named constructors
		static Color4 gray( float val, float a = 1.f );
	
	public: // Accessors 
		const float& operator[] ( int idx ) const;
		float& operator[] ( int idx );

	private: // Helper members
		static float Color4::* const (map[4]);

	public: // Members
		float r, g, b, a;
	};
}